home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 011 / vidclock.arc / VIDCLOCK.BAS
BASIC Source File  |  1985-08-04  |  8KB  |  248 lines

  1. 1 '     CLOCK.BAS - 5/3/82 - 5/8/82 - Digital Clock & Alarm.
  2. 2 '     by Wes Meier (70215,1017)
  3. 3 '
  4. 4 '     Requires BASICA and Color/Graphics Adapter
  5. 5 '
  6. 6 SCREEN 1,0:COLOR 1,0:KEY OFF:CLS:DEFINT A-Z:DEFSNG P,F
  7. 7 X=0:D0=0:D1=0:D2=0:D3=0:D4=0:D5=0:D6=0:D7=0:D8=0:D9=0:S36=3600:S10=10:S60=60
  8. 8 H1=0:H2=0:M1=0:M2=0:S1=0:S2=0:A=0:B=0:C=0:D=0:E=0:F=0:I=0
  9. 9 GOTO 45
  10. 10 '
  11. 11 ' Subroutine to put numbers on screen.
  12. 12 '
  13. 13 IF I=0 THEN I=10
  14. 14 ON I GOSUB 16,17,18,19,20,21,22,23,24,25
  15. 15 RETURN
  16. 16 PUT (X,40),D1,PSET:RETURN
  17. 17 PUT (X,40),D2,PSET:RETURN
  18. 18 PUT (X,40),D3,PSET:RETURN
  19. 19 PUT (X,40),D4,PSET:RETURN
  20. 20 PUT (X,40),D5,PSET:RETURN
  21. 21 PUT (X,40),D6,PSET:RETURN
  22. 22 PUT (X,40),D7,PSET:RETURN
  23. 23 PUT (X,40),D8,PSET:RETURN
  24. 24 PUT (X,40),D9,PSET:RETURN
  25. 25 PUT (X,40),D0,PSET:RETURN
  26. 26 '
  27. 27 '** Subroutine to Draw Clock Face **
  28. 28 '
  29. 29 CLS
  30. 30 LOCATE 3,15:PRINT "The Time is:"
  31. 31 LINE (0,30)-(319,109),2,B
  32. 32 LINE (4,34)-(315,105),2,B
  33. 33 PAINT (11,31),2,2
  34. 34 LINE(210,51)-(214,56),4,BF
  35. 35 LINE(210,85)-(214,90),4,BF
  36. 36 LINE(105,51)-(109,56),4,BF
  37. 37 LINE(105,85)-(109,90),4,BF
  38. 38 LOCATE 16,(40-LEN(DATEMESSAGE$))/2
  39. 39 PRINT DATEMESSAGE$
  40. 40 IF ALARM$<>"Y"THEN RETURN
  41. 41 LOCATE 21,9
  42. 42 PRINT"Alarm set at "ALARMTIME$"."
  43. 43 PRINT TAB(7)"Time remaining ="
  44. 44 RETURN
  45. 45 D=560:PI=3.14159
  46. 46 DIM D1(D),D2(D),D3(D),D4(D),D5(D),D6(D),D7(D),D8(D),D9(D),D0(D)
  47. 47 DIM MONTH$(12),DAY$(7)
  48. 48 'CREATE D1
  49. 49 LINE (29,40)-(33,99),,BF
  50. 50 LINE (20,95)-(41,99),,BF
  51. 51 PSET (29,40)
  52. 52 DRAW "G8F3E8"
  53. 53 PAINT (27,43)
  54. 54 GET (10,40)-(51,99),D1
  55. 55 CLS
  56. 56 'Create D2
  57. 57 CIRCLE (31,57),20,3
  58. 58 CIRCLE (31,57),15,3
  59. 59 CIRCLE (31,57),20,0,PI,1.8*PI
  60. 60 CIRCLE (31,57),15,0,PI,1.8*PI
  61. 61 LINE (10,57)-(15,57),3
  62. 62 PSET(10,95)
  63. 63 DRAW"D4R41U4L33"
  64. 64 LINE -(49,65)
  65. 65 LINE(44,65)-(10,95)
  66. 66 PAINT(30,42),3,3
  67. 67 LINE (47,91)-(51,99),3,BF
  68. 68 GET (10,40)-(51,99),D2
  69. 69 'Create D3
  70. 70 CLS
  71. 71 CIRCLE (31,82),20,3
  72. 72 CIRCLE (31,82),15,3
  73. 73 CIRCLE (31,82),20,0,PI/2,PI
  74. 74 CIRCLE (31,82),15,0,PI/2,PI
  75. 75 CIRCLE (31,55),18,3
  76. 76 CIRCLE (31,55),13,3
  77. 77 CIRCLE (31,55),18,0,PI,3*PI/2
  78. 78 CIRCLE (31,55),13,0,PI,3*PI/2
  79. 79 LINE (11,82)-(16,82),3
  80. 80 LINE (13,55)-(18,55),3
  81. 81 LINE (31,65)-(31,70)
  82. 82 PAINT (12,83),3,3
  83. 83 PAINT (14,54),3,3
  84. 84 PAINT (32,67),3,3
  85. 85 GET (10,40)-(51,99),D3
  86. 86 'CREATE D4
  87. 87 CLS
  88. 88 CIRCLE (10,40),28,3,3/2*PI,2*PI,2
  89. 89 CIRCLE (14,40),28,3,3/2*PI,2*PI,2
  90. 90 LINE (24,40)-(28,40)
  91. 91 PAINT (25,41),3,3
  92. 92 PSET (16,67)
  93. 93 LINE (10,73)-(51,69),3,BF
  94. 94 LINE (42,40)-(46,99),3,BF
  95. 95 LINE (51,99)-(37,95),3,BF
  96. 96 GET (10,40)-(51,99),D4
  97. 97 'CREATE D5
  98. 98 CLS
  99. 99 LINE (15,40)-(51,44),3,BF
  100. 100 LINE (10,69)-(30,65),3,BF
  101. 101 LINE (15,40)-(10,69)
  102. 102 LINE (19,40)-(14,69)
  103. 103 PAINT (16,45),3,3
  104. 104 LINE (51,40)-(47,49),3,BF
  105. 105 CIRCLE (31,82),20,3,PI,PI/2
  106. 106 CIRCLE (31,82),15,3,PI,PI/2
  107. 107 LINE (10,82)-(15,82)
  108. 108 PAINT (12,84),3,3
  109. 109 GET (10,40)-(51,99),D5
  110. 110 'CREATE D6
  111. 111 CLS
  112. 112 CIRCLE (31,82),20,3
  113. 113 CIRCLE (31,82),15,3
  114. 114 PAINT (12,84),3,3
  115. 115 CIRCLE (51,82),42,3,PI/2,PI,1.02
  116. 116 LINE (51,40)-(51,44),3
  117. 117 CIRCLE (51,82),37,3,PI/2,PI,1.02
  118. 118 PAINT (49,42),3,3
  119. 119 PSET (10,75):LINE (11,75)-(11,80),3,BF
  120. 120 GET (10,40)-(51,99),D6
  121. 121 'CREATE D7
  122. 122 CLS
  123. 123 LINE (10,40)-(14,49),3,BF
  124. 124 LINE (10,40)-(51,44),3,BF
  125. 125 LINE (29,99)-(33,99),3
  126. 126 CIRCLE (51,99),55,3,PI/2,PI,2.5
  127. 127 CIRCLE (55,103),55,3,PI/2,PI,2.5
  128. 128 LINE (51,40)-(51,49),3
  129. 129 PAINT (31,97),3,3
  130. 130 GET (10,40)-(51,99),D7
  131. 131 'CREATE D8
  132. 132 CLS
  133. 133 CIRCLE (31,82),20,3
  134. 134 CIRCLE (31,82),15,3
  135. 135 PAINT (12,84),3,3
  136. 136 CIRCLE (31,55),18,3
  137. 137 CIRCLE (31,55),13,3
  138. 138 PAINT (30,42),3,3
  139. 139 GET (10,40)-(51,99),D8
  140. 140 'CREATE D9
  141. 141 CLS
  142. 142 CIRCLE (31,57),20,3
  143. 143 CIRCLE (31,57),15,3
  144. 144 PAINT (30,42),3,3
  145. 145 CIRCLE (10,57),42,3,3*PI/2,2*PI,1.02
  146. 146 LINE (10,95)-(10,99),3
  147. 147 CIRCLE (10,57),37,3,3*PI/2,2*PI,1.02
  148. 148 PAINT (12,97),3,3
  149. 149 GET (10,40)-(51,99),D9
  150. 150 'CREATE D0
  151. 151 CLS
  152. 152 CIRCLE (30,71),28,3,PI,2*PI,59/42
  153. 153 CIRCLE (30,71),22,3,PI,2*PI,59/42
  154. 154 CIRCLE (30,68),28,3,0,PI,59/42
  155. 155 CIRCLE (30,68),22,3,0,PI,59/42
  156. 156 LINE(10,68)-(10,72)
  157. 157 LINE(14,68)-(14,72)
  158. 158 LINE(46,68)-(46,72)
  159. 159 LINE(50,68)-(50,72)
  160. 160 PAINT (12,70),3,3
  161. 161 GET (10,40)-(51,99),D0
  162. 162 CLS
  163. 163 LOCATE 12,1
  164. 164 PRINT "Have you set the date and time (Y/N) ?"
  165. 165 A$=INKEY$:IF A$="" THEN 165
  166. 166 IF A$=CHR$(13) OR A$="Y" OR A$="y" THEN 181
  167. 167 INPUT "Enter the TIME ";T$
  168. 168 ON ERROR GOTO 170
  169. 169 GOTO 171
  170. 170 RESUME 167
  171. 171 TIME$=T$
  172. 172 INPUT "Enter the DATE ";D$
  173. 173 ON ERROR GOTO 175
  174. 174 GOTO 176
  175. 175 RESUME 172
  176. 176 DATE$=D$
  177. 177 ON ERROR GOTO 0
  178. 178 DATA January,February,March,April,May,June,July,August,September,October
  179. 179 DATA November,December,Sunday,Monday,Tuesday,Wednesday,Thursday,Friday
  180. 180 DATA Saturday
  181. 181 RESTORE
  182. 182 FOR X=1 TO 12
  183. 183 READ MONTH$(X)
  184. 184 NEXT
  185. 185 FOR X=1 TO 7
  186. 186 READ DAY$(X)
  187. 187 NEXT
  188. 188 PRINT"Do you want to set an alarm (Y/N) ?"
  189. 189 A$=INKEY$:IF A$=""THEN 189
  190. 190 IF A$=CHR$(13) OR A$="Y" OR A$="y" THEN A$="Y" ELSE A$="N"
  191. 191 ALARM$=A$:IF A$="N"THEN 202
  192. 192 INPUT "Enter alarm time as HH:MM:SS ";ALARMTIME$
  193. 193 IF LEN(ALARMTIME$)<>8 THEN BEEP:GOTO 192
  194. 194 ALARMH=VAL (LEFT$(ALARMTIME$,2))
  195. 195 IF ALARMH<0 OR ALARMH>24 THEN BEEP:GOTO 192
  196. 196 ALARMS=VAL (RIGHT$(ALARMTIME$,2))
  197. 197 IF ALARMM<0 OR ALARMM>59 THEN BEEP:GOTO 192
  198. 198 ALARMM=VAL (MID$(ALARMTIME$,4,2))
  199. 199 IF ALARMS<0 OR ALARMS>59 THEN BEEP:GOTO 192
  200. 200 ALARMSEC!=S36*ALARMH+S60*ALARMM+ALARMS
  201. 201 MID$(ALARMTIME$,3,1)=":":MID$(ALARMTIME$,6,1)=":"
  202. 202 ' Set up day factor
  203. 203 MONTH=VAL(LEFT$(DATE$,2))
  204. 204 DAY=VAL(MID$(DATE$,4,2))
  205. 205 YEAR=VAL(RIGHT$(DATE$,4))
  206. 206 MONTH$=MONTH$(MONTH)
  207. 207 IF MONTH>2 THEN 209 ELSE F=365*YEAR+DAY+31*(MONTH-1)
  208. 208 F=F+(YEAR-1)\4-3*(((YEAR-1)\100+1))\4:GOTO 211
  209. 209 F=365*YEAR+DAY+31*(MONTH-1)
  210. 210 F=F-INT(.4*MONTH+2.3)+YEAR\4-3*(YEAR\100+1)\4
  211. 211 DAY$=DAY$(F+INT(-F/7+1)*7)
  212. 212 DATEMESSAGE$=DAY$+", "+MONTH$+STR$(DAY)+","+STR$(YEAR)
  213. 213 GOSUB 27
  214. 214 A=10:B=A:C=A:D=A:E=A:F=A
  215. 215 'Main Time comparison loop
  216. 216 H1=VAL (LEFT$(TIME$,1))
  217. 217 H2=VAL (MID$(TIME$,2,1))
  218. 218 M1=VAL (MID$(TIME$,4,1))
  219. 219 M2=VAL (MID$(TIME$,5,1))
  220. 220 S1=VAL (MID$(TIME$,7,1))
  221. 221 S2=VAL (RIGHT$(TIME$,1))
  222. 222 IF A<>S2 THEN A=S2:X=268:I=A:GOSUB 13
  223. 223 IF B<>S1 THEN B=S1:X=220:I=B:GOSUB 13
  224. 224 IF C<>M2 THEN C=M2:X=163:I=C:GOSUB 13
  225. 225 IF D<>M1 THEN D=M1:X=115:I=D:GOSUB 13
  226. 226 IF E<>H2 THEN E=H2:X=58:I=E:GOSUB 13
  227. 227 IF F<>H1 THEN F=H1:X=10:I=F:GOSUB 13
  228. 228 IF INKEY$<>""THEN 213
  229. 229 SECS!=S36*(S10*H1+H2)+S60*(S10*M1+M2)+S10*S1+S2:IF SECS!<5 THEN 202
  230. 230 IF ALARM$="N"THEN 216
  231. 231 SECSREM!=ALARMSEC!-SECS!
  232. 232 HRSREM=SECSREM!\S36:MINSREM=(SECSREM!-S36*HRSREM)\S60
  233. 233 SECSREM=SECSREM!-S36*HRSREM-S60*MINSREM
  234. 234 TIMEREM$=RIGHT$(STR$(HRSREM),2)+":"
  235. 235 TIMEREM$=TIMEREM$+RIGHT$(STR$(MINSREM),2)+":"+RIGHT$(STR$(SECSREM),2)
  236. 236 IF LEFT$(TIMEREM$,1)=" "THEN MID$(TIMEREM$,1)="0"
  237. 237 IF MID$(TIMEREM$,4,1)=" "THEN MID$(TIMEREM$,4,1)="0"
  238. 238 IF MID$(TIMEREM$,7,1)=" "THEN MID$(TIMEREM$,7,1)="0"
  239. 239 IF SECSREM!>0 THEN 243 ELSE TIMEREM$="00:00:00"
  240. 240 LOCATE 23,6:PRINT"Press Any Key to Stop Alarm.";
  241. 241 IF FLAG =0 THEN PLAY "MBL6G":FLAG=1:COLOR 2,1:GOTO 243
  242. 242 PLAY "MBL6C":FLAG=0:COLOR 1,0
  243. 243 LOCATE 22,24:PRINT TIMEREM$;
  244. 244 IF TIMEREM$<>"00:00:00" THEN 246
  245. 245 IF INKEY$<>"" THEN ALARM$="N":COLOR 1,0:GOTO 213
  246. 246 GOTO 216
  247. 247 END ' of program.
  248. ╚aÖn÷σ{l╖╧²/z≈ºv,aÖn÷σ}ñô~╪δ_Oz≈ºv,a1@Ö▀BΘ¥3τ╧÷"┴≤Ω∞▓¥+;$f₧\c⌠C -á:q╪-┬Æ┼Md ,≤<y╦¥q9uFû╢┴ö╕å¥q«σ|µτΓgß⌠=85>¼╘="≡